This application relates generally to distributing updates to geographically distributed servers on a network, and, more specifically, to enabling the version of each source file stored on heterogeneous content servers to be automatically updated.
Often, source files for web content servers are coded by multiple programmers on remotely located (stage) source servers. It is not unusual for one programmer(s) to code xe2x80x9cHTMLxe2x80x9d files on one source server while another programmer(s) creates executable and/or image files on another source server. Once a programmer debugs a newly created/edited update file, it is eventually distributed to each content server and placed in a corresponding file directory. Historically, the distribution of the current version of a set of xe2x80x9cupdatedxe2x80x9d or new files from remotely located source servers through the Internet to content servers has proven to be a difficult task for several reasons. One reason is that the file directory structure and hardware configuration can vary between individual web content servers. In this case, the distribution of a set of files for each web content server must be separately organized according to each server""s file directory structure and hardware capabilities. Another reason is that the actual size of the set of files may be so large that their distribution is relatively slow on a network with limited bandwidth capabilities.
Therefore, a need exists for a computer implementable method of distributing a set of the current version of source files to a plurality of content servers using a minimal amount of bandwidth. Preferably, the method will tailor the distribution of the set of source files according to the configuration, i.e., file structure and the hardware constraints, of each content server. Also, preferably the method would provide a facility for rolling back the current version of the set of source files to a previous version. The present invention is directed to providing such a computer implementable method.
In accordance with the present invention, a computer implementable method for updating a version of a set of source files stored on a content server over a network, comprising: (a) determining a configuration of each content server on the network, the configuration enabling a source file to be copied to a location on the content server; (b) identifying each source file on a source server that is different than any source file stored on a global server; (c) copying each identifiably different source file from the source server to the global server, each source file copied from the source server and a set of source files stored on the global server being employed to create a current version of the set of source files on the global server; and (d) employing the configuration of each content server to copy the current version of each source file that is included in the set of source files on the global server to a directory created on each content server, whereby the version of the set of source files stored on each content server is updated by renaming the current version of each source file copied to the directory on each content server.
In accordance with other aspects of the present invention, the method provides for renaming each current version of each source file that is copied to the directory created on each content server; and deleting the directory created on the content server and deleting another version of each source file that is updated by the renaming of the current version of each source file copied to the content server directory.
In accordance with yet other aspects of the present invention, the method provides for when the current version of each source file is copied to the directory created on each content server, disabling access to the set of source files on a particular content server until the renaming of the current version of each source file copied to the directory on the particular content is completed.
In accordance with still other aspects of the present invention, the method provides for when the current version of each source file is copied to the directory created on each content server, starting the renaming process with the current version of each copied source file that is furthest away from the root directory of each content server.
In accordance with other aspects of the present invention, the method provides for archiving each version of the set of source files in a repository on the global server, the archiving causing each source file to be individually compressed and stored as an archived object in the repository associated with the global server. The repository can be a versioned file tree repository for the set of source files.
In accordance with still further aspects of the present invention, the method provides for when a return to a previous version of the set of source files is requested, retrieving each archived object associated with the previous version of the set of source files from the repository associated with the global server. Each archived object associated with the previous version of the set of source files is unarchived to reconstitute each source file needed to upgrade the set of source files on the content server to the previous version. Each reconstituted source file is copied to a directory created on each content server, whereby the version of the set of source files on each content server is upgraded to the previous version by renaming the copied reconstituted source files.
In accordance with still other aspects of the present invention, the method provides for enabling a user to edit the configuration for each content server. Alternatively, the method may provide for automatically obtain the configuration for each content server.
In accordance with other aspects of the present invention, the method provides for employing a file access protocol to gain file level access to each source file, including FTP, NFS, CIFS and MFTP. The file access protocol may employ one port to send and receive data that includes a message and a source file. The type of source file includes image, hyper text mark-up language (HTML), script, sound, video, text, picture and application program code.
In accordance with yet other aspects of the present invention, the method provides for when a new content server is added to the network, employing the current version of the set of source files stored in a repository on the global server and a configuration of the new content server to replicate the current version of the set of source files in at least one directory created on the new content server.
In accordance with still further aspects of the present invention, the method provides for copying the differences in the set of source files on the source server to a primary global server which generates a particular container that includes the differences in the set of source files stored on each remotely located secondary global server. The primary global server distributes the particular container from the primary global server to each associated secondary global server which employ the contents of the particular container to replicate the current version of the set of source files in a repository on the Secondary global server. The current version of each source file stored in the repository on the Secondary global server that is identified as necessary to replicate the current version of the set of source files on the content server is copied to another directory created on each content server that is local to the secondary global server. The set of source files may be stored in a versioned file tree repository on the primary global server and each secondary global server.
In accordance with yet other aspects of the present invention, the method provides for automatically distributing the container to the secondary global server. Alternatively, the distribution of the container to the secondary global server can be selectively enabled by an input. Also, the updating to the current version of the set of source files on the content server can be automatic or selectively enabled by an input. Additionally, each container can be distributed in a plurality of packets to the secondary global server and each packet may have a size that is less than a size of the container.
In accordance with other aspects of the present invention, the method provides for encrypting each message transmitted between the primary global server and each secondary global server.
In accordance with still other aspects of the present invention, the method provides for distributing a particular list to each secondary global server. The distributed list is employed by each secondary global server to identify the particular version for upgrading the set of sources files on each local content server.
In accordance with still other aspects of the present invention, the method provides for when another global server is added to the network, creating a copy of the versioned file tree repository for the set of source files. The versioned file tree repository for the set of source files is replicated on the other global server which employs the set of source files included in the versioned file tree repository to update the version of the set of source files stored on each content server that is local to the other global server. The type of the other global server may be primary or secondary.
In accordance with other additional aspects of the present invention, a system which implements substantially the same functionality in substantially the same manner as the methods described above is provided.
In accordance with yet other additional aspects of this invention, a computer-readable medium that includes computer-executable instructions that may be used to perform substantially the same methods as those described above is provided.